package com.view;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 * 万年历的界面
 * 
 * @author Administrator
 *
 */
public class WanNianLi {

	// 主界面
	private JFrame jFrame = null;

	// 年的减1按钮
	private JButton yearMin = null;

	// 年的显示
	private JLabel yearTxt = null;

	// 年的加按钮
	private JButton yearMax = null;

	// 月的减1按钮
	private JButton monthMin = null;

	// 月的显示
	private JLabel monthTxt = null;

	// 月的加按钮
	private JButton monthMax = null;

	// 显示日历的界面
	private RiLiPanel rili = null;

	// 当前年份
	private int year = 0;

	// 当前月
	private int month = 0;

	// 界面的宽
	private int kuan = 500;

	// 界面的高
	private int gao = 450;

	// 初始化
	public WanNianLi() {

		// 标题
		jFrame = new JFrame("万年历");

		// 大小
		jFrame.setSize(kuan, gao);

		// 居中
		jFrame.setLocationRelativeTo(null);

		// 设置布局
		jFrame.setLayout(new FlowLayout());

		// 获得当前时间
		Date date = new Date();

		// 时间格式化
		SimpleDateFormat format = new SimpleDateFormat("yyyy");

		// 获得当前年
		year = Integer.parseInt(format.format(date));

		// 时间格式化
		format = new SimpleDateFormat("MM");

		// 获得当前月
		month = Integer.parseInt(format.format(date));

		// 初始化按钮
		yearMin = new JButton("-");

		// 年的显示
		yearTxt = new JLabel(year + "");

		// 初始化年的按钮
		yearMax = new JButton("+");

		// 将年的相关按钮添加到界面
		jFrame.add(yearMin);
		jFrame.add(yearTxt);
		jFrame.add(yearMax);

		// 初始化月按钮
		monthMin = new JButton("-");

		// 月的显示
		monthTxt = new JLabel(month + "");

		// 初始化月的按钮
		monthMax = new JButton("+");

		// 将月的相关按钮添加到界面
		jFrame.add(monthMin);
		jFrame.add(monthTxt);
		jFrame.add(monthMax);

		// 设置按钮的标志
		yearMin.setActionCommand("yearMin");
		yearMax.setActionCommand("yearMax");
		monthMin.setActionCommand("monthMin");
		monthMax.setActionCommand("monthMax");
		
		//设置监听
		JianTing jianTing=new JianTing();
		yearMin.addActionListener(jianTing);
		yearMax.addActionListener(jianTing);
		monthMin.addActionListener(jianTing);
		monthMax.addActionListener(jianTing);
		

		// 初始化日历的绘图界面
		rili = new RiLiPanel(year, month);

		// 大小的对象
		Dimension dim = new Dimension(kuan - 80, gao - 100);

		// 设置日历的大小
		rili.setPreferredSize(dim);

		rili.setBackground(Color.gray);

		// 设置日历的初始界面

		// 添加日历绘图界面
		jFrame.add(rili);

		// 关闭的方法
		jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// 显示
		jFrame.setVisible(true);

	}

	// 用于事件的监听
	class JianTing implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {
			//判断按下的是哪个按钮
			if(e.getActionCommand().equals("yearMin")){
				//计算年 年-
				year=year-1>=1900?year-1:year;
			}
			else if(e.getActionCommand().equals("yearMax")){
				//计算年 年+
				year++;
			}
			else if(e.getActionCommand().equals("monthMin")){
				//计算月 月-
				month=month-1>=1?month-1:month;
			}
			else if(e.getActionCommand().equals("monthMax")){
				//计算月 月+
				month=month+1<=12?month+1:month;
			}
			
			//设置显示的年标签
			yearTxt.setText(year+"");
			
			//设置显示月的标签
			monthTxt.setText(month+"");
			
			//设置年月
			rili.setYear(year);
			rili.setMonth(month);
			
			//重绘
			rili.repaint();
			
		}

	}
}
